{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "machine-learning-algorithms-for-beginners.ipynb",
      "provenance": [],
      "authorship_tag": "ABX9TyNCjLyZX/t8t4eVP2DBvRDx",
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/towardsai/tutorials/blob/master/machine_learning_algorithms_for_beginners/machine_learning_algorithms_for_beginners.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tIiJ8_Xf_QYc"
      },
      "source": [
        "#Machine Learning Algorithms for Beginners Code Examples\n",
        "\n",
        "Tutorial: https://towardsai.net/p/machine-learning/machine-learning-algorithms-for-beginners-with-python-code-examples-ml-19c6afd60daa\n",
        "Github: https://github.com/towardsai/tutorials/tree/master/machine_learning_algorithms_for_beginners"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "QVc-KJWMAD6J"
      },
      "source": [
        "# Linear Regression Example"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "w33IafvU41nP",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 647
        },
        "outputId": "ee531603-133d-4ae7-945b-50366c36fecf"
      },
      "source": [
        "# Import required libraries:\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn import linear_model\n",
        "# Read the CSV file :\n",
        "data = pd.read_csv(\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/FuelConsumptionCo2.csv\")\n",
        "data.head()\n",
        "# Let's select some features to explore more :\n",
        "data = data[[\"ENGINESIZE\",\"CO2EMISSIONS\"]]\n",
        "# ENGINESIZE vs CO2EMISSIONS:\n",
        "plt.scatter(data[\"ENGINESIZE\"] , data[\"CO2EMISSIONS\"] , color=\"blue\")\n",
        "plt.xlabel(\"ENGINESIZE\")\n",
        "plt.ylabel(\"CO2EMISSIONS\")\n",
        "plt.show()\n",
        "# Generating training and testing data from our data:\n",
        "# We are using 80% data for training.\n",
        "train = data[:(int((len(data)*0.8)))]\n",
        "test = data[(int((len(data)*0.8))):]\n",
        "# Modeling:\n",
        "# Using sklearn package to model data :\n",
        "regr = linear_model.LinearRegression()\n",
        "train_x = np.array(train[[\"ENGINESIZE\"]])\n",
        "train_y = np.array(train[[\"CO2EMISSIONS\"]])\n",
        "regr.fit(train_x,train_y)\n",
        "# The coefficients:\n",
        "print (\"coefficients : \",regr.coef_) #Slope\n",
        "print (\"Intercept : \",regr.intercept_) #Intercept\n",
        "# Plotting the regression line:\n",
        "plt.scatter(train[\"ENGINESIZE\"], train[\"CO2EMISSIONS\"], color='blue')\n",
        "plt.plot(train_x, regr.coef_*train_x + regr.intercept_, '-r')\n",
        "plt.xlabel(\"Engine size\")\n",
        "plt.ylabel(\"Emission\")\n",
        "# Predicting values:\n",
        "# Function for predicting future values :\n",
        "def get_regression_predictions(input_features,intercept,slope):\n",
        " predicted_values = input_features*slope + intercept\n",
        " return predicted_values\n",
        "# Predicting emission for future car:\n",
        "my_engine_size = 3.5\n",
        "estimatd_emission = get_regression_predictions(my_engine_size,regr.intercept_[0],regr.coef_[0][0])\n",
        "print (\"Estimated Emission :\",estimatd_emission)\n",
        "# Checking various accuracy:\n",
        "from sklearn.metrics import r2_score\n",
        "test_x = np.array(test[['ENGINESIZE']])\n",
        "test_y = np.array(test[['CO2EMISSIONS']])\n",
        "test_y_ = regr.predict(test_x)\n",
        "print(\"Mean absolute error: %.2f\" % np.mean(np.absolute(test_y_ - test_y)))\n",
        "print(\"Mean sum of squares (MSE): %.2f\" % np.mean((test_y_ - test_y) ** 2))\n",
        "print(\"R2-score: %.2f\" % r2_score(test_y_ , test_y) )"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "stream",
          "text": [
            "coefficients :  [[38.79512384]]\n",
            "Intercept :  [127.16989951]\n",
            "Estimated Emission : 262.9528329350173\n",
            "Mean absolute error: 20.60\n",
            "Mean sum of squares (MSE): 746.45\n",
            "R2-score: 0.71\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sTVcjiI_AX2X"
      },
      "source": [
        "# Multivariable Linear Regression"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "eQfVWFlrAbl3",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 35
        },
        "outputId": "4d352621-f40e-4420-bdba-295e4c8395b2"
      },
      "source": [
        "# Import the required libraries:\n",
        "import pandas as pd\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn import linear_model\n",
        "# Read the CSV file:\n",
        "data = pd.read_csv(\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/ML0101ENv3/labs/FuelConsumptionCo2.csv\")\n",
        "data.head()\n",
        "# Consider features we want to work on:\n",
        "X = data[[ 'ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY','FUELCONSUMPTION_HWY', \n",
        " 'FUELCONSUMPTION_COMB','FUELCONSUMPTION_COMB_MPG']]\n",
        "Y = data[\"CO2EMISSIONS\"]\n",
        "# Generating training and testing data from our data:\n",
        "# We are using 80% data for training.\n",
        "train = data[:(int((len(data)*0.8)))]\n",
        "test = data[(int((len(data)*0.8))):]\n",
        "#Modeling:\n",
        "#Using sklearn package to model data :\n",
        "regr = linear_model.LinearRegression()\n",
        "train_x = np.array(train[[ 'ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY',\n",
        " 'FUELCONSUMPTION_HWY', 'FUELCONSUMPTION_COMB','FUELCONSUMPTION_COMB_MPG']])\n",
        "train_y = np.array(train[\"CO2EMISSIONS\"])\n",
        "regr.fit(train_x,train_y)\n",
        "test_x = np.array(test[[ 'ENGINESIZE', 'CYLINDERS', 'FUELCONSUMPTION_CITY',\n",
        " 'FUELCONSUMPTION_HWY', 'FUELCONSUMPTION_COMB','FUELCONSUMPTION_COMB_MPG']])\n",
        "test_y = np.array(test[\"CO2EMISSIONS\"])\n",
        "# print the coefficient values:\n",
        "coeff_data = pd.DataFrame(regr.coef_ , X.columns , columns=[\"Coefficients\"])\n",
        "coeff_data\n",
        "#Now let's do prediction of data:\n",
        "Y_pred = regr.predict(test_x)\n",
        "# Check accuracy:\n",
        "from sklearn.metrics import r2_score\n",
        "R = r2_score(test_y , Y_pred)\n",
        "print (\"R² :\",R)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "R² : 0.9362912548588906\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OnN44asuAo_m"
      },
      "source": [
        "# Polynomial Regression"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KPl85hmJAroZ",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 283
        },
        "outputId": "0762f4d9-0593-4a40-92c0-17384032ce31"
      },
      "source": [
        "# Import required libraries:\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "# Generate datapoints:\n",
        "x = np.arange(-5,5,0.1)\n",
        "y_noise = 20 * np.random.normal(size = len(x))\n",
        "y = 1*(x**3) + 1*(x**2) + 1*x + 3+y_noise\n",
        "plt.scatter(x,y)\n",
        "# Make polynomial data:\n",
        "x1 = x\n",
        "x2 = np.power(x1,2)\n",
        "x3 = np.power(x1,3)\n",
        "n = len(x1)\n",
        "# Reshaping data:\n",
        "x1_new = np.reshape(x1,(n,1))\n",
        "x2_new = np.reshape(x2,(n,1))\n",
        "x3_new = np.reshape(x3,(n,1))\n",
        "# First column of matrix X:\n",
        "x_bias = np.ones((n,1))\n",
        "# Form the complete x matrix:\n",
        "x_new = np.append(x_bias,x1_new,axis=1)\n",
        "x_new = np.append(x_new,x2_new,axis=1)\n",
        "x_new = np.append(x_new,x3_new,axis=1)\n",
        "# Finding transpose:\n",
        "x_new_transpose = np.transpose(x_new)\n",
        "# Finding dot product of original and transposed matrix :\n",
        "x_new_transpose_dot_x_new = x_new_transpose.dot(x_new)\n",
        "# Finding Inverse:\n",
        "temp_1 = np.linalg.inv(x_new_transpose_dot_x_new)# Finding the dot product of transposed x and y :\n",
        "temp_2 = x_new_transpose.dot(y)\n",
        "# Finding coefficients:\n",
        "theta = temp_1.dot(temp_2)\n",
        "theta\n",
        "# Store coefficient values in different variables:\n",
        "beta_0 = theta[0]\n",
        "beta_1 = theta[1]\n",
        "beta_2 = theta[2]\n",
        "beta_3 = theta[3]\n",
        "# Plot the polynomial curve:\n",
        "plt.scatter(x,y)\n",
        "plt.plot(x,beta_0 + beta_1*x1 + beta_2*x2 + beta_3*x3,c=\"red\")\n",
        "# Prediction function:\n",
        "def prediction(x1,x2,x3,beta_0,beta_1,beta_2,beta_3):\n",
        " y_pred = beta_0 + beta_1*x1 + beta_2*x2 + beta_3*x3\n",
        " return y_pred\n",
        " \n",
        "# Making predictions:\n",
        "pred = prediction(x1,x2,x3,beta_0,beta_1,beta_2,beta_3)\n",
        " \n",
        "# Calculate accuracy of model:\n",
        "def err(y_pred,y):\n",
        " var = (y - y_pred)\n",
        " var = var*var\n",
        " n = len(var)\n",
        " MSE = var.sum()\n",
        " MSE = MSE/n\n",
        " \n",
        " return MSE\n",
        "# Calculating the error:\n",
        "error = err(pred,y)\n",
        "error"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "404.4306194559573"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UF__r1KUCp30"
      },
      "source": [
        "# Exponential Regression"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "q-w2fW-uDKHK",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 313
        },
        "outputId": "c0fe061f-0608-4245-a76a-49577dc73d88"
      },
      "source": [
        "# Import required libraries:\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from scipy.optimize import curve_fit\n",
        "# Dataset values :\n",
        "day = np.arange(0,8)\n",
        "weight = np.array([251,209,157,129,103,81,66,49])\n",
        "# Exponential Function :\n",
        "def expo_func(x, a, b):\n",
        " return a * b ** x\n",
        "#popt :Optimal values for the parameters\n",
        "#pcov :The estimated covariance of popt\n",
        "popt, pcov = curve_fit(expo_func, day, weight)\n",
        "weight_pred = expo_func(day,popt[0],popt[1])\n",
        "# Plotting the data\n",
        "plt.plot(day, weight_pred, 'r-')\n",
        "plt.scatter(day,weight,label='Day vs Weight')\n",
        "plt.title(\"Day vs Weight a*b^x\")\n",
        "plt.xlabel('Day')\n",
        "plt.ylabel('Weight')\n",
        "plt.legend()\n",
        "plt.show()\n",
        "# Equation\n",
        "a=popt[0].round(4)\n",
        "b=popt[1].round(4)\n",
        "print(f'The equation of regression line is y={a}*{b}^x')"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "stream",
          "text": [
            "The equation of regression line is y=254.0486*0.7964^x\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "85GQobzgDz7X"
      },
      "source": [
        "# Sinusoidal Regression"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "vPU_9qhzD2Z4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 556
        },
        "outputId": "9351ac5c-76cd-436b-f40b-d42f3902678b"
      },
      "source": [
        "# Import required libraries:\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from scipy.optimize import curve_fit\n",
        "from sklearn.metrics import r2_score\n",
        "# Generating dataset:\n",
        "# Y = A*sin(B(X + C)) + D\n",
        "# A = Amplitude\n",
        "# Period = 2*pi/B\n",
        "# Period = Length of One Cycle\n",
        "# C = Phase Shift (In Radian)\n",
        "# D = Vertical Shift\n",
        "X = np.linspace(0,1,100) #(Start,End,Points)\n",
        "# Here…\n",
        "# A = 1\n",
        "# B= 2*pi\n",
        "# B = 2*pi/Period\n",
        "# Period = 1\n",
        "# C = 0\n",
        "# D = 0\n",
        "Y = 1*np.sin(2*np.pi*X)\n",
        "# Adding some Noise :\n",
        "Noise = 0.4*np.random.normal(size=100)\n",
        "Y_data = Y + Noise\n",
        "plt.scatter(X,Y_data,c=\"r\")\n",
        "# Calculate the value:\n",
        "def calc_sine(x,a,b,c,d):\n",
        " return a * np.sin(b* ( x + np.radians(c))) + d\n",
        "# Finding optimal parameters :\n",
        "popt,pcov = curve_fit(calc_sine,X,Y_data)\n",
        "# Plot the main data :\n",
        "plt.scatter(X,Y_data)# Plot the best fit curve :\n",
        "plt.plot(X,calc_sine(X,*popt),c=\"r\")\n",
        "plt.show()\n",
        "# Check the accuracy :\n",
        "Accuracy =r2_score(Y_data,calc_sine(X,*popt))\n",
        "print (Accuracy)\n",
        "# Function to calculate the value :\n",
        "def calc_line(X,m,b):\n",
        " return b + X*m\n",
        "# It returns optimized parametes for our function :\n",
        "# popt stores optimal parameters\n",
        "# pcov stores the covarience between each parameters.\n",
        "popt,pcov = curve_fit(calc_line,X,Y_data)\n",
        "# Plot the main data :\n",
        "plt.scatter(X,Y_data)\n",
        "# Plot the best fit line :\n",
        "plt.plot(X,calc_line(X,*popt),c=\"r\")\n",
        "plt.show()\n",
        "# Check the accuracy of model :\n",
        "Accuracy =r2_score(Y_data,calc_line(X,*popt))\n",
        "print (\"Accuracy of Linear Model : \",Accuracy)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "stream",
          "text": [
            "0.7440255048983322\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        },
        {
          "output_type": "stream",
          "text": [
            "Accuracy of Linear Model :  0.3723160356057551\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bS2qLvX-EiNX"
      },
      "source": [
        "# Logarithmic Regression"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-FNHHye-Ek9P",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 337
        },
        "outputId": "d7411a82-656f-4bf6-b79d-3f5029efdc63"
      },
      "source": [
        "# Import required libraries:\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.metrics import r2_score\n",
        "# Dataset:\n",
        "# Y = a + b*ln(X)\n",
        "X = np.arange(1,50,0.5)\n",
        "Y = 10 + 2*np.log(X)\n",
        "#Adding some noise to calculate error!\n",
        "Y_noise = np.random.rand(len(Y))\n",
        "Y = Y +Y_noise\n",
        "plt.scatter(X,Y)\n",
        "# 1st column of our X matrix should be 1:\n",
        "n = len(X)\n",
        "x_bias = np.ones((n,1))\n",
        "print (X.shape)\n",
        "print (x_bias.shape)\n",
        "# Reshaping X :\n",
        "X = np.reshape(X,(n,1))\n",
        "print (X.shape)\n",
        "# Going with the formula:\n",
        "# Y = a + b*ln(X)\n",
        "X_log = np.log(X)\n",
        "# Append the X_log to X_bias:\n",
        "x_new = np.append(x_bias,X_log,axis=1)\n",
        "# Transpose of a matrix:\n",
        "x_new_transpose = np.transpose(x_new)\n",
        "# Matrix multiplication:\n",
        "x_new_transpose_dot_x_new = x_new_transpose.dot(x_new)\n",
        "# Find inverse:\n",
        "temp_1 = np.linalg.inv(x_new_transpose_dot_x_new)\n",
        "# Matrix Multiplication:\n",
        "temp_2 = x_new_transpose.dot(Y)\n",
        "# Find the coefficient values:\n",
        "theta = temp_1.dot(temp_2)\n",
        "# Plot the data:\n",
        "a = theta[0]\n",
        "b = theta[1]\n",
        "Y_plot = a + b*np.log(X)\n",
        "plt.scatter(X,Y)\n",
        "plt.plot(X,Y_plot,c=\"r\")\n",
        "# Check the accuracy:\n",
        "Accuracy = r2_score(Y,Y_plot)\n",
        "print (Accuracy)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "(98,)\n",
            "(98, 1)\n",
            "(98, 1)\n",
            "0.9702462770235498\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    }
  ]
}